/*
 * Copyright 2018 Zhongan.com All right reserved. This software is the
 * confidential and proprietary information of Zhongan.com ("Confidential
 * Information"). You shall not disclose such Confidential Information and shall
 * use it only in accordance with the terms of the license agreement you entered
 * into with Zhongan.com.
 */

package com.zhongan.cloud.gateway.config;

import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
import static java.lang.annotation.ElementType.METHOD;

import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

/**
 * 使用该注解的方法，会被网关作为公共方法开放请求。 须和 {@link RequestMapping @RequestMapping} 共同使用。
 *
 * @author tongyufu
 */
//表示@CheckCase 可以被用在方法, 字段或者annotation声明上.
@Target({ METHOD, ANNOTATION_TYPE })
//表示这个标注信息是在运行期通过反射被读取的.
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Gateway {

    /**
     * 接口名称，默认为方法名全路径
     */
    String name() default "";

    /**
     * 用户请求的URI，该URI会转发到当前方法的URI。默认与当前方法的URI相同。
     */
    String fromUri() default "";

    /**
     * 请求类型，默认与当前方法相同
     */
    RequestMethod requestMethod() default RequestMethod.GET;

    /**
     * 描述
     */
    String description() default "";
}
